package org.spring.bean.factory.support;

import org.spring.bean.exceptions.BeansException;
import org.spring.bean.factory.config.BeanFactoryPostProcessor;

/**
 * 对标准 {@link BeanFactoryPostProcessor} SPI 的扩展，允许注册进一步的 bean 定义<i>before<i> 常规 BeanFactoryPostProcessor 检测开始。
 * 特别是，BeanDefinitionRegistryPostProcessor 可以注册进一步的 bean 定义，进而定义 BeanFactoryPostProcessor 实例。
 *
 * @author Juergen Hoeller
 * @see org.springframework.context.annotation.ConfigurationClassPostProcessor
 * @since 3.0.1
 */
public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor {

    /**
     * 在标准初始化之后修改应用程序上下文的内部 bean 定义注册表。
     * 所有常规 bean 定义都将被加载，但尚未实例化任何 bean。
     * 这允许在下一个后处理阶段开始之前添加更多的 bean 定义。
     *
     * @param registry 应用程序上下文使用的 bean 定义注册表
     *
     * @throws org.springframework.beans.BeansException in case of errors
     */
    void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException;

}
